home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Library / Manuels & Misc / Assembly / AOA.ZIP / CH25 / IMAGEPRC.C next >
Encoding:
C/C++ Source or Header  |  1994-08-04  |  1.3 KB  |  44 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef unsigned char   BYTE;
  5. typedef BYTE IMAGE[251][256];
  6.  
  7. void main (void) {
  8.     int     h, i, j, k, l, sum, iterations;
  9.     IMAGE   *datain, *dataout;
  10.     FILE    *f, *g;
  11.  
  12.     f = fopen ("roller1.raw", "rb");
  13.     g = fopen ("roller2.raw", "wb");
  14.     datain  = malloc (sizeof (IMAGE));
  15.     dataout = malloc (sizeof (IMAGE));
  16.     fread (datain, sizeof (IMAGE), 1, f);
  17.     printf ("Enter number of iterations: ");
  18.     scanf ("%d", &iterations);
  19.     printf ("Computing result\n");
  20.  
  21.     for (i = 0; i < 251; ++i)
  22.         for (j = 0; j < 256; ++j)
  23.             (*dataout)[i][j] = (*datain)[i][j];
  24.  
  25.     for (h = 0; h < iterations; ++h) {
  26.         for (i = 1; i < 250; ++i)
  27.             for (j = 1; j < 255; ++j) {
  28.                 sum = 0;
  29.                 for (k = -1; k < 2; ++k)
  30.                     for (l = -1; l < 2; ++l)
  31.                         sum += (*datain)[i+k][j+l];
  32.                 (*dataout)[i][j] = (sum + (*datain)[i][j]*7 + 1) / 16;
  33.             }
  34.         for (i = 0; i < 251; ++i)
  35.             for (j = 0; j < 256; ++j)
  36.                 (*datain)[i][j] = (*dataout)[i][j];
  37.     }
  38.  
  39.     printf ("Writing results\n");
  40.     fwrite (dataout, sizeof (IMAGE), 1, g);
  41.     fclose (f);
  42.     fclose (g);
  43. }
  44.